package com.learn.finished;
/*
删除有序数组中的重复项
给定一个有序数组nums，原地删除重复出现的元素，使得每个元素只出现一次，返回删除后数组的长度
 */

public class num_26 {
    //双指针，可以用有序的特点，使用双指针判断，j和i相等与否
    public static int doublePoint(int[] nums){
        if (nums.length == 0) {
            return 0;
        }
        int slow=0;
        for (int fast = 1; fast < nums.length; fast++) {
            //如果快指针和慢指针不相等，那么慢指针进行移位
            //切将快指针的值，放入到慢指针的下一个位置中
            //这样比较不需要创建额外的数组，但是会破坏原有数组的位置
            if (nums[slow]!=nums[fast]){
                slow++;
                nums[slow]=nums[fast];
            }
        }

        //此处返回的是长度，所以还需要+1，才是结果
        return slow+1;
    }
    public static void main(String[] args) {
        int[] ints = {0, 1, 1, 1, 2, 2, 4, 5, 7};
        System.out.println(doublePoint(ints));
    }
}
